import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);


/*全局state对象,用于保存所有组件的公共数据*/
const state = sessionStorage.getItem('state') ? JSON.parse(sessionStorage.getItem("state")) : {
    // 用户信息
    user: {
        // 用户ID
        userId: '',
        // 企业ID
        orgId: '',
        // 企业ID
        company: '',
        // 企业全称
        orgFullName: '',
        // 备注: 用来存SessionID
        remark: '',
        // 用户类型
        userType: '',
        // 名称
        name: '',
        // 头像
        headPicture: '',
        // 默认的企业ID
        defaultOrganization: '',

    },
    // 用户的token
    token: '',
    // 后端的sessionID
    sessionID: '',

    // 最终地址
    destination: '',

    video: [],

}


//获取state对象的方法（计算属性）监听
/**
 * 使用方法: this.$store.getters.getXXX
 *
 */
const getters = {
    getUser(state) {
        return state.user;
    },
    getToken(state) {
        return state.token;
    },
    getSessionID(state) {
        return state.sessionID;
    },
    getDestination(state){
        return state.destination;
    },
    getVideo(state) {
        return state.video;
    },
}

//更新state值的方法，唯一可以更新state值的方法(同步)
/**
 * 使用方法:  this.$store.commit("setXXX", data)
 *
 */
const mutations = {
    setUser(state, user) {
        state.user = user;
    },
    setToken(state, data) {
        state.token = data;
        sessionStorage.setItem('token', data);
    },
    setSessionID(state, data) {
        state.sessionID = data;
        sessionStorage.setItem('sessionID', data);
    },
    setDestination(state, data) {
        state.destination = data;
        sessionStorage.setItem('destination', data);
    },
    setVideo(state, data) {
        state.video = data;
        sessionStorage.setItem('video', data);
    },
}

//异步执行
const actions = {
    asyncUpdateUser(context, user) {
        context.commit('updateUser', user)
    }
}


export default new Vuex.Store({
    state,
    getters,
    mutations,
    actions
})
